// 导入fs模块
const fs = require('fs')

// 导入path模块
const path = require('path')

// 声明一个变量 接收处理好的路径
const jsonPath = path.join(__dirname,'../data/dogs.json')

// 封装添加狗狗的方法
function addDog(dog,callback) {
// function addDog(dog,callback){
    
    // 先读取原本的内容
    fs.readFile(jsonPath, (err, data) => {
    // fs.readFile(__dirname + '../data/dogs.json', (err, data) => {
    // fs.readFile('../data/dogs.json', (err, data) => {
    // fs.readFile('./data/dogs.json', (err, data) => {
        
        // 读取成功
        if (!err) {
            // console.log(data);

            // JSON通常用于与服务器交换数据。
            // 在接收服务器数据时一般是字符串。
            // 我们可以使用 JSON.parse() 方法将数据转换为JavaScript對象。
            // console.log( JSON.parse(data) );

            // 定义一个数组接收读取到的元素
            const arr = JSON.parse(data)

            // 向数组中增加元素
            arr.push(dog)

            // 向JSON文件写入数组元素
            // 在向服务器发送数据时一般是字符串。
            // 我们可以使用 JSON.stringify() 方法将JavaScript值轉化為JSON字符串。
            fs.writeFile(jsonPath, JSON.stringify(arr), err => {
            // fs.writeFile(__dirname + '../data/dogs.json', JSON.stringify(arr), err => {
            // fs.writeFile('../data/dogs.json', JSON.stringify(arr), err => {
            // fs.writeFile('./data/dogs.json', JSON.stringify(arr), err => {
                if (!err) {
                    console.log('写入成功')

                    // callback()

                    if( callback instanceof Function) {
                        callback()
                    }

                } else {
                    console.log('写入失败')
                }
            })
        
        } else {
            
            // 读取失败
            console.log('读取失败')
        }
    })
}


// 封装的读取狗狗的方法
function readDog () {

    // 读取
    fs.readFile(jsonPath,(err,data) => {
    // fs.readFile(__dirname + '../data/dogs.json',(err,data) => {
    // fs.readFile('../data/dogs.json',(err,data) => {
    // fs.readFilec('./data/dogs.json',(err,data) => {

        // 如果每次就打印数组
        if(!err){
            console.log( JSON.parse(data) );
        }else {
            // 打印错误
            console.log(err);
        }
    })
}

// addDog('比熊')

// 模块内容暴露
module.exports = {
    readDog,
    addDog
}